/* 
 * Die Klasse erzeugt ein Dialogfenster, in dem die Daten fuer ein 
 * Regal eingegeben werden koennen.
 * 
 * Datei: RegalAnlegenPanel.java    Autor:  Christian Plappert
 * Datum: 08.12.2011                Version: 0.1
 * 
 * Historie: 
 * 
 * 08.12.2011:  v0.1    Klasse wurde angelegt.
 *                      
 */
package bibvis;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;

import basis.lokal.Lokalisierung;

public class RegalAnlegenPanel extends JDialog
{

  private static final long serialVersionUID = -4360697454891762272L;

  private JLabel laenge, breite, hoehe, etagen, abschnitte, bezeichner;
  private JPanel panelUnten;
  private JTextField txt_laenge, txt_breite, txt_hoehe, txt_etagen,
      txt_abschnitte, txt_bezeichner;
  private JTextPane txt_info;
  private JButton ok, ca;
  private Lokalisierung lokal;


  protected RegalAnlegenPanel (Lokalisierung lokal)
  {
    this.lokal = lokal;
    panelUnten = new JPanel ();
    laenge = new JLabel (lokal.gibUebersetzung ("Laenge: "));
    laenge.setLabelFor (txt_laenge);
    breite = new JLabel (lokal.gibUebersetzung ("Breite: "));
    breite.setLabelFor (txt_breite);
    hoehe = new JLabel (lokal.gibUebersetzung ("Hoehe: "));
    hoehe.setLabelFor (txt_hoehe);
    etagen = new JLabel (lokal.gibUebersetzung ("Etagen: "));
    etagen.setLabelFor (txt_etagen);
    abschnitte = new JLabel (lokal.gibUebersetzung ("Abschnitte: "));
    abschnitte.setLabelFor (txt_abschnitte);
    bezeichner = new JLabel (lokal.gibUebersetzung ("Bezeichner: "));
    bezeichner.setLabelFor (txt_bezeichner);
    setTitle (lokal.gibUebersetzung ("Regal anlegen"));

    initialisieren ();
  }


  private void initialisieren()
  {
    setLayout (new GridBagLayout ());

    GridBagConstraints c = new GridBagConstraints ();
    c.ipadx = 50;
    c.ipady = 20;
    c.gridx = 0;
    c.gridy = 0;
    c.fill = GridBagConstraints.BOTH;
    c.insets = new Insets (5, 5, 0, 5);
    txt_info = new JTextPane ();
    txt_info.setEditable (false);
    add (txt_info, c);
    c.insets = new Insets (5, 5, 25, 5);
    c.gridx = 0;
    c.gridy = 1;
    add (panelUnten, c);
    panelUnten.setLayout (new GridLayout (7, 2));
    panelUnten.add (laenge);
    panelUnten.add (txt_laenge = new JTextField ());
    txt_laenge.addMouseListener (new KlickListener (txt_laenge));
    txt_laenge.setDocument (new IntegerDokument ());
    panelUnten.add (breite);
    panelUnten.add (txt_breite = new JTextField ());
    txt_breite.addMouseListener (new KlickListener (txt_breite));
    txt_breite.setDocument (new IntegerDokument ());
    panelUnten.add (hoehe);
    panelUnten.add (txt_hoehe = new JTextField ());
    txt_hoehe.setDocument (new IntegerDokument ());
    txt_hoehe.addMouseListener (new KlickListener (txt_hoehe));
    panelUnten.add (etagen);
    panelUnten.add (txt_etagen = new JTextField ());
    txt_etagen.setDocument (new IntegerDokument ());
    txt_etagen.addMouseListener (new KlickListener (txt_etagen));
    panelUnten.add (abschnitte);
    panelUnten.add (txt_abschnitte = new JTextField ());
    txt_abschnitte.setDocument (new IntegerDokument ());
    txt_abschnitte
      .addMouseListener (new KlickListener (txt_abschnitte));
    panelUnten.add (bezeichner);
    panelUnten.add (txt_bezeichner = new JTextField ());
    txt_bezeichner
      .addMouseListener (new KlickListener (txt_bezeichner));
    panelUnten.add (ca = new JButton (lokal.gibUebersetzung ("ca")));
    panelUnten.add (ok = new JButton (lokal.gibUebersetzung ("ok")));
    pack ();
    setVisible (true);
  }


  protected JTextField gibTxt_laenge()
  {
    return txt_laenge;
  }


  protected JTextField gibTxt_breite()
  {
    return txt_breite;
  }


  protected JTextField gibTxt_hoehe()
  {
    return txt_hoehe;
  }


  protected JTextField gibTxt_etagen()
  {
    return txt_etagen;
  }


  protected JTextField gibTxt_abschnitte()
  {
    return txt_abschnitte;
  }


  protected JTextField gibTxt_bezeichner()
  {
    return txt_bezeichner;
  }


  protected JTextPane getTxt_info()
  {
    return txt_info;
  }


  protected JButton getOk()
  {
    return ok;
  }


  protected void setOk(JButton ok)
  {
    this.ok = ok;
  }


  protected JButton getCa()
  {
    return ca;
  }


  protected void setCa(JButton ca)
  {
    this.ca = ca;
  }


  /**
   * Die Methode setzt voreingetragene Daten in das Eingabefenster.
   * Diese sind entweder die Daten des vorherigen Fensters oder bei der
   * ersten Erzeugung Standardwerte.
   * 
   * @param laenge
   * @param breite
   * @param hoehe
   * @param etagen
   * @param abschnitte
   * @param bezeichner
   */
  protected void setzeVoreingetrageneDaten(int laenge, int breite,
    int hoehe, int etagen, int abschnitte, String bezeichner)
  {
    txt_laenge.setText ("" + laenge);
    txt_breite.setText ("" + breite);
    txt_hoehe.setText ("" + hoehe);
    txt_etagen.setText ("" + etagen);
    txt_abschnitte.setText ("" + abschnitte);
    txt_bezeichner.setText ("" + bezeichner);
  }

  /**
   * Der KlickListener hat die Aufgabe ein JTextfeld, in das geklickt
   * worden ist, wieder weiss zu faerben, falls es durch eine Fehler-
   * meldung rot gefaerbt worden ist.
   */
  private class KlickListener extends MouseAdapter
  {
    JTextField textFeld;


    public KlickListener (JTextField textFeld)
    {
      this.textFeld = textFeld;
    }


    @Override
    public void mouseClicked(MouseEvent e)
    {
      textFeld.setBackground (Color.WHITE);
    }
  }
}
